package com.xiaoniu.timer;

import io.vertx.core.Vertx;
import io.vertx.core.VertxOptions;
import io.vertx.core.json.JsonObject;

import java.text.ParseException;

/**
 * 定义任务执行行为
 * Created by sweet on 2017/11/10.
 * ---------------------------
 */
public interface Timer {

  Vertx VERTX = Vertx.vertx(new VertxOptions().setBlockedThreadCheckInterval(50000));

  /**
   * 添加一次性任务
   * @param time 时间表达式
   * @param className 要执行方法的类名
   * @param methodName 方法名
   * @param args 参数
   * @return 添加成功此次任务的 id
   */
  String addTimerJob(String time, String className, String methodName, String args) throws ParseException;

  /**
   * 添加周期性任务
   * @param time 时间表达式
   * @param className 要执行方法的类名
   * @param methodName 方法名
   * @param args 参数
   * @return 添加成功，返回此任务的Id
   */
  String addPeriodicJob(String time, String className, String methodName, String args);

  /**
   * 执行周期性任务
   * @param taskId
   * @param time
   * @param className
   * @param methodName
   * @param args
   * @return
   */
  Long executePeriodicJob(String taskId, String time, String className, String methodName, String args);

  /**
   * 执行一次性任务
   * @param taskId
   * @param l
   * @param className
   * @param methodName
   * @param args
   * @return
   */
  Long execute(String taskId, long l, String className, String methodName, String args);
}
